package org.wdcode.back.helper;

import java.util.List;

import org.wdcode.back.cache.SortCache;
import org.wdcode.back.po.Group;
import org.wdcode.back.po.Sort;
import org.wdcode.base.helper.BaseEntityCacheHelper;
import org.wdcode.base.util.Struts2Util;
import org.wdcode.common.tools.Lists;
import org.wdcode.common.util.CommonUtil;

/**
 * 属性分类相关业务助手类 可操作缓存
 * @author WD
 * @since JDK6
 * @version 1.0 2009-11-23
 */
public final class SortHelper extends BaseEntityCacheHelper<SortCache, Sort> {
	// 属性分类助手
	private static SortHelper	helper;

	/**
	 * 获得分类列表
	 * @return 分类列表
	 */
	public List<Sort> getSortList() {
		// 获得分组实体
		Group group = GroupHelper.getHelper().getGroupByUrl(Struts2Util.getActionMapping().getName());
		// 判断分组是否空
		if (CommonUtil.isEmpty(group)) {
			// 返回空列表
			return Lists.emptyList();
		} else {
			// 返回分组列表
			return getSortListByGroupId(group.getId());
		}
	}

	/**
	 * 根据分组ID获得本组的分类列表
	 * @param groupId 分组ID
	 * @return 分类列表
	 */
	public List<Sort> getSortListByGroupId(int groupId) {
		// 获得全部分类列表
		List<Sort> list = getList();
		// 分类列表大小
		int size = list.size();
		// 声明空列表储存组分类
		List<Sort> lsSort = Lists.getList(size);
		// 分类实体
		Sort sort = null;
		// 循环分类列表
		for (int i = 0; i < size; i++) {
			// 获得分类实体
			sort = list.get(i);
			// 判断是否是这个分组的
			if (groupId == sort.getGroupId()) {
				// 添加到组分类列表
				lsSort.add(sort);
			}
		}
		// 返回列表
		return lsSort;
	}

	/**
	 * 实例化一个对象
	 */
	public Sort newInstance() {
		return new Sort();
	}

	/**
	 * 获得子类的Class
	 * @return 子类的Class
	 */
	public Class<Sort> getEntityClass() {
		return Sort.class;
	}

	/**
	 * 获得属性分类助手
	 * @return 属性分类助手
	 */
	public static SortHelper getHelper() {
		return helper;
	}

	/**
	 * 设置属性分类助手
	 * @param helper 属性分类助手
	 */
	public void setHelper(SortHelper helper) {
		SortHelper.helper = helper;
	}
}